package com.emm.yixun.system.service;

import javax.jws.WebService;

import com.emm.yixun.common.app.base.CommonResDTO;
import com.emm.yixun.common.model.Notice;
import com.emm.yixun.common.model.dto.NoticeDto;
import com.emm.yixun.common.model.dto.ReceiverNoticeDto;
import com.emm.yixun.common.page.Page;
import com.emm.yixun.common.response.Response;
import com.emm.yixun.common.response.ResponseList;

@WebService
public interface NoticeServiceFacade {
	/**
	 * 新增
	 */
	Response<NoticeDto> save(NoticeDto dto);

	/**
	 * 修改,当selective=true时修改非空列,当selective=false修改所有列
	 */
	Response<Integer> updateByPrimaryKey(NoticeDto dto, Boolean selective);

	/**
	 * 逻辑删除
	 */
	Response<Integer> deleteByPrimaryKey(Long id);

	/**
	 * 主键查询
	 */
	Response<Notice> findById(Long id);

	/**
	 * 根据dto查询记录
	 */
	ResponseList<Notice> findByDto(NoticeDto dto);

	/**
	 * 根据dto以及分页参数查询记录
	 */
	Page<Notice> findPageByDto(NoticeDto dto, Integer begin, Integer row);

	/**
	 * 创建客户维护消息
	 * 
	 * @return
	 */
	public CommonResDTO customerManageNotice();

	/**
	 * 推送客户维护消息
	 * 
	 * @return
	 */
	public CommonResDTO customerManagePushMsg();

	/**
	 * 创建客户关怀消息
	 * 
	 * @return
	 */
	public Response<CommonResDTO> customerCareNotice();

	/**
	 * 推送客户关怀消息 包括生日和结婚纪念日,提前通知
	 * 
	 * @return
	 */
	public Response<CommonResDTO> customerCarePushMsg();

	/**
	 * 推送客户关怀消息 包含当天过生日及结婚纪念日的客户
	 * 
	 * @return
	 */
	public  Response<CommonResDTO> customerCarePushMsgCurr();

	/**
	 * 创建员工关怀消息
	 * 
	 * @return
	 */
	public Response<CommonResDTO> userCareNotice();

	/**
	 * 推送员工关怀消息 包含当天过生日及入职周年的员工
	 * 
	 * @return
	 */
	public Response<CommonResDTO> userCarePushMsgCurr();

	/**
	 * 创建逾期未签约消息
	 * 
	 * @return
	 */
	public Response<CommonResDTO> customerNoSignedNotice();

	/**
	 * 推送逾期未签约消息
	 * 
	 * @return
	 */
	public CommonResDTO customerNoSignedPushMsgCurr();

	/**
	 * 创建逾期未付款消息
	 * 
	 * @return
	 */
	public Response<CommonResDTO> customerNoPaymentNotice();

	/**
	 * 推送逾期未付款消息
	 * 
	 * @return
	 */
	public CommonResDTO customerNoPaymentPushMsgCurr();

	/**
	 * 修改,当selective=true时修改非空列,当selective=false修改所有列
	 */
	Response<Integer> count(NoticeDto dto);

	/**
	 * 统计某一大类的Notice数量
	 */
	Response<Integer> noticeCount(NoticeDto dto);

	/**
	 * 根据dto以及分页参数查询记录
	 */
	Page<Notice> getNoticeList(NoticeDto dto, Integer begin, Integer row);

	/**
	 * 查询用户消息并分页
	 */
	public Page<ReceiverNoticeDto> receiverNoticePage(ReceiverNoticeDto receiverNoticeDto, Integer begin,
			Integer pageSize);

	/**
	 * 查询消息条数
	 */
	public Response<Integer> receiverNoticeCount(ReceiverNoticeDto receiverNoticeDto);
}
